/**************************************************************************/
/*  visual_shader_node_float_func.hpp                                     */
/**************************************************************************/
/*                         This file is part of:                          */
/*                             GODOT ENGINE                               */
/*                        https://godotengine.org                         */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */
/*                                                                        */
/* Permission is hereby granted, free of charge, to any person obtaining  */
/* a copy of this software and associated documentation files (the        */
/* "Software"), to deal in the Software without restriction, including    */
/* without limitation the rights to use, copy, modify, merge, publish,    */
/* distribute, sublicense, and/or sell copies of the Software, and to     */
/* permit persons to whom the Software is furnished to do so, subject to  */
/* the following conditions:                                              */
/*                                                                        */
/* The above copyright notice and this permission notice shall be         */
/* included in all copies or substantial portions of the Software.        */
/*                                                                        */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY   */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,   */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE      */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                 */
/**************************************************************************/

// THIS FILE IS GENERATED. EDITS WILL BE LOST.

#ifndef GODOT_CPP_VISUAL_SHADER_NODE_FLOAT_FUNC_HPP
#define GODOT_CPP_VISUAL_SHADER_NODE_FLOAT_FUNC_HPP

#include <godot_cpp/classes/ref.hpp>
#include <godot_cpp/classes/visual_shader_node.hpp>

#include <godot_cpp/core/class_db.hpp>

#include <type_traits>

namespace godot {

class VisualShaderNodeFloatFunc : public VisualShaderNode {
	GDEXTENSION_CLASS(VisualShaderNodeFloatFunc, VisualShaderNode)

public:
	enum Function {
		FUNC_SIN = 0,
		FUNC_COS = 1,
		FUNC_TAN = 2,
		FUNC_ASIN = 3,
		FUNC_ACOS = 4,
		FUNC_ATAN = 5,
		FUNC_SINH = 6,
		FUNC_COSH = 7,
		FUNC_TANH = 8,
		FUNC_LOG = 9,
		FUNC_EXP = 10,
		FUNC_SQRT = 11,
		FUNC_ABS = 12,
		FUNC_SIGN = 13,
		FUNC_FLOOR = 14,
		FUNC_ROUND = 15,
		FUNC_CEIL = 16,
		FUNC_FRACT = 17,
		FUNC_SATURATE = 18,
		FUNC_NEGATE = 19,
		FUNC_ACOSH = 20,
		FUNC_ASINH = 21,
		FUNC_ATANH = 22,
		FUNC_DEGREES = 23,
		FUNC_EXP2 = 24,
		FUNC_INVERSE_SQRT = 25,
		FUNC_LOG2 = 26,
		FUNC_RADIANS = 27,
		FUNC_RECIPROCAL = 28,
		FUNC_ROUNDEVEN = 29,
		FUNC_TRUNC = 30,
		FUNC_ONEMINUS = 31,
		FUNC_MAX = 32,
	};

	void set_function(VisualShaderNodeFloatFunc::Function p_func);
	VisualShaderNodeFloatFunc::Function get_function() const;

protected:
	template <typename T, typename B>
	static void register_virtuals() {
		VisualShaderNode::register_virtuals<T, B>();
	}

public:
};

} // namespace godot

VARIANT_ENUM_CAST(VisualShaderNodeFloatFunc::Function);

#endif // ! GODOT_CPP_VISUAL_SHADER_NODE_FLOAT_FUNC_HPP
